package at.fhooe.mcm12.java.interfaces;

import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.ArrayList;

import at.fhooe.mcm12.java.clients.AbstractClient;
import at.fhooe.mcm12.java.sensors.AbstractSensor;

public interface RMIClientManager extends Remote, ISensorListener {
	public static final String HOST = "127.0.0.1"; //"10.28.12.54";
	public static final String NAME = "ClientManager";

	public RMISensorControllerInterface getSensorController() throws RemoteException;

	public void disable(AbstractClient _client) throws RemoteException;

	public void enable(AbstractClient _client) throws RemoteException;

	public ArrayList<AbstractClient> getClients() throws RemoteException;

	public ArrayList<AbstractClient> getClientsForSensor(AbstractSensor _sensor) throws RemoteException;

	public ArrayList<RMISensorInterface> getSensorsForClient(
			AbstractClient _client) throws RemoteException;

	public ArrayList<RMISensorInterface> getSensors() throws RemoteException;

	public boolean isEnabled(AbstractClient _client) throws RemoteException;

	public void registerFor(AbstractClient _client, RMISensorInterface _sensor) throws RemoteException;

	public void unregisterFor(AbstractClient _client, RMISensorInterface _sensor) throws RemoteException;
}
